This disclosure relates generally to the field of computer graphics. More particularly, but not by way of limitation, this disclosure describes reentrant window server software.
A compositing window manager is software that draws a graphical user interface on a computer display—it positions windows, draws additional elements on windows (e.g., borders and title bars), and controls how windows interact with each other and with the rest of the desktop environment. In operation, a compositing window manager provides each application off-screen memory for window memory and composites these windows/buffers into designated memory (e.g., an assembly buffer), the contents of which represent the screen or desktop environment. Because compositing window mangers have access to all application window memory, they may also perform additional processing such as, applying two-dimensional (2D) and three-dimensional (3D) animated effects such as blending, fading, scaling, rotation, duplication, bending and contortion, shuffling, blurring, redirecting applications, and translating windows into one of a number of displays and virtual desktops.
Referring to FIG. 1, prior art composite window manager 100 uses window server application 105 to composite application window buffer memory 110, 115, and 120 into assembly buffer 125 in a back-to-front order (i.e., 110→115→120) such that later drawn windows (e.g., window 120) may wholly or partially occlude, such as through transparency, prior composited windows (e.g., windows 110 and 115). The centralized nature of composite window manager 100 and modern system design in which each application is allocated its own distinct and non-shared memory space, inhibits run-time applications from generating visual effects based on prior composited window memory. While window server 105 can account for prior composited content when generating a graphic effect (e.g., a blur or reflection), applications themselves cannot. Thus, it would be beneficial to provide a mechanism by which individual applications can take into account the effect of prior composited window memory without disturbing (or violating) modern memory management schemes.